package com.xzmd.md_city.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xzmd.md_city.entity.ProductInfo;
import com.xzmd.md_city.service.ProductInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * @Author：超呆
 * @Date：2021/07/10 17:15
 */
@Controller
public class ProductInfoController {
    @Resource
    private ProductInfoService productInfoService;

    //    动作映射，将方法映射为/index.html,也可以映射/go
//    浏览器地址输入: http://localhost:8080/index.html
//   实际跳转的是：http://localhost:8080/templates/page/index.html
//    1.打开主页
    @RequestMapping("/")
    public String go(HttpSession session) {//传数据到前端网页(此处最好使用session缓存数据)
        List<ProductInfo> products = productInfoService.findAllProducts();
//        注意清除缓存，map相当于request对象
        session.setAttribute("products",products);
        //map.put("products", products);
        return "page/index";
    }

    //   2.跳转到商品详情页
    @RequestMapping("/gopage")
//    @ResponseBody
    public String  goPage(Integer pid,HttpSession session) {//直接从session中拿，不用
        //再到数据库中查询
        ProductInfo pd = ((List<ProductInfo>)session.getAttribute("products")).get(pid);
//        System.out.println("商品："+pd.getName());
        session.setAttribute("pd",pd);
        return "page/page";
    }

    /////////3.跳转到商品所有分类页my-all.html,请完成数据的传递，参考当前页第27行写法////////////
    @RequestMapping("/goall")
    public String goMyAll(Map map) {
        List<ProductInfo> products = productInfoService.findAllProducts();
        map.put("products", products);
        return "page/my-all";
    }

    //  4.跳转到购物车页my-car.html
    @RequestMapping("/gocar")
    public String goMyCar() {
        return "page/my-car";
    }

    @RequestMapping("/pds")
    @ResponseBody
    /////////允许跨域@CrossOrigin或callback方式/////
    //1.@CrossOrigin(origins = "*",maxAge = 3000)
    //json字符串List<ProductInfo>
    public String pds(@RequestParam("callback") String callback) {
        //2.return callback+"("+JSONObject.toJSONString(user)+")";
        //2.return callback+"("+JSONObject.toJSONString(productInfoService.findAllProducts())+")";
        return callback+"("+"{'name':'小红','age':19}"+")";
    }
    //http://localhost:8080/goods
    @GetMapping("/goods")
    @ResponseBody
    @CrossOrigin//前端跨域
    public List<ProductInfo> ps(){
        //return  productInfoService.findAllProducts();
        return  productInfoService.findAllProducts();
    }
    ////restful风格///
    @DeleteMapping("/g/{i}")
    @ResponseBody
    @CrossOrigin////前端跨域,传回去的必须是json对象
    public JSONObject del(@PathVariable int i){
        //串一个json字符串出来
        String text="{'info':"+"'删除"+i+"'}";
        return JSON.parseObject(text);
    }
    @PutMapping("/g/{i}")
    @ResponseBody
    @CrossOrigin//前端跨域,传回去的必须是json对象
    public JSONObject put(@PathVariable int i){
        System.out.println("更新："+i);
        //串一个json字符串出来
        String text="{'info':"+"'更新"+i+"'}";
        return JSON.parseObject(text);
    }
}
